#region head comment
/*
Code generate by YhdSdkTool.
email:starpeng@vip.qq.com
2013-01-21 23:00:56:928 +08:00
*/
#endregion

using System;
using System.Xml.Serialization;
using System.Collections.Generic;
using YhdSdk.Domain;
using YhdSdk.Domain.Product;
using YhdSdk.Response.Product;

namespace YhdSdk.Request.Product
{
    /// <summary>
    /// 批量更新系列产品库存信息
    ///<para></para>
    ///<para>通过指定产品id或外部产品编码更新不同仓库的产品库存。更新成功，则返回更新成功记录数，更新失败，则返回更新失败记录数及相应的</para>
    ///<para></para>
    ///<para>备注：</para>
    ///<para>1.只支持系列产品更新</para>
    ///<para>2.不传warehouseId则更新默认仓库的产品库存</para>
    ///<para>3.updateType为1表示用virtualStockNum替代原有库存（如果更新的virtualStockNum小于冻结库存，</para>
    ///<para>则直接用冻结库存替代原有库存），为2表示virtualStockNum+冻结库存数替代原有库存</para>
    ///<para>注：1号商城可售库存=虚拟库存-虚拟冻结库存,商家使用updateType=2更新库存时需要减去未发货订单中占用的库存数。</para>
    ///<para>依赖接口：</para>
    ///<para>yhd.logistics.warehouse.info.get 获取仓库信息</para>
    /// </summary>
    public class YhdSerialProductsStockUpdateRequest : IYhdRequest<YhdSerialProductsStockUpdateResponse>
    {
        /// <summary>
        /// 系列产品Id，与outerId二选一
        /// </summary>
        [XmlElement("productId")]
        public Nullable<Int64> ProductId
        {
            get;
            set;
        }

        /// <summary>
        /// 外部产品Id，与productId二选一
        /// </summary>
        [XmlElement("outerId")]
        public String OuterId
        {
            get;
            set;
        }

        /// <summary>
        /// 更新类型，默认为1（1：全量更新，2：增量更新）
        /// </summary>
        [XmlElement("updateType")]
        public Nullable<Int32> UpdateType
        {
            get;
            set;
        }

        /// <summary>
        /// 产品库存信息列表(产品库存信息之间逗号分隔,产品Id、仓库Id和库存数之间冒号分隔)
        ///<para>与outerStockList二选一;</para>
        ///<para>warehouseId从</para>
        ///<para>yhd.logistics.warehouse.info.get 获取</para>
        /// </summary>
        /// <example>产品Id: 仓库Id：库存数,产品Id: 仓库Id：库存数</example>
        [XmlElement("productStockList")]
        public String ProductStockList
        {
            get;
            set;
        }

        /// <summary>
        /// 产品库存信息列表(产品库存信息之间逗号分隔,外部产品Id、仓库Id和库存数之间冒号分隔)
        ///<para>与productStockList二选一</para>
        ///<para>warehouseId从</para>
        ///<para>yhd.logistics.warehouse.info.get 获取</para>
        /// </summary>
        /// <example>外部产品Id: 仓库Id：库存数,外部产品Id: 仓库Id：库存数</example>
        [XmlElement("outerStockList")]
        public String OuterStockList
        {
            get;
            set;
        }

        /// <summary>
        /// Api接口名称
        /// </summary>
        public String ApiName
        {
            get{ return "yhd.serial.products.stock.update"; }
        }

        /// <summary>
        /// 获取参数列表
        /// </summary>
        public IDictionary<string, string> GetParameters()
        {
            YhdDictionary parameters = new YhdDictionary();
            parameters.Add("productId" ,this.ProductId);
            parameters.Add("outerId" ,this.OuterId);
            parameters.Add("updateType" ,this.UpdateType);
            parameters.Add("productStockList" ,this.ProductStockList);
            parameters.Add("outerStockList" ,this.OuterStockList);
            return parameters;
        }

        /// <summary>
        /// 验证参数
        /// </summary>
        public void Validate()
        {
        }

    }
}
